
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class Admin_Controller extends CI_Controller {
 
    function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('url');
        $this->load->library('grocery_CRUD');
        $this->load->library('Session');
    }
 
    public function index()
    {
        $this->generateOutput((object)array('output' => '' , 'js_files' => array() , 'css_files' => array(), 'show_index' => TRUE, 'title' => 'Bienvenido','main_content' => 'inicio','sub_content' => 'inicio'));
    }
    
    function updateStateCounter($post_array,$primary_key)
    {
        $id = $post_array['CON_SERIAL'];
        $counter = array(
            "CON_ESTADO" => 'U'
        );      
        $this->load->model('Measurement_Model');
        $update = $this->Measurement_Model->updateCounter($counter,$id);
//        $acc_id = $this->Measurement_Model->getAccIdCounter($id);
//        $update = $this->Measurement_Model->updateAccStock($acc_id);
        return $update;
    }
    
    public function managementAccessoryEnrollment()
    {   
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_model('AccessoryEnrollment_Model');
        $id = $this->input->get('id');
        if($id!=false)        $this->session->set_userdata('MAT_ID',$id);
        $crud->set_table('MATRICULAREQUIEREACCESORIO');
        $crud->columns('ACC_ID','MRA_FECHAADQUISICION','MRA_CANTIDAD','MRA_OBSERVACIONES', 'MRA_ESTADOADQUISICIONACCESORIO');
        $crud->set_relation('ACC_ID','ACCESORIO','ACC_NOMBRE');
        
        $crud->display_as('ACC_ID','Accesorio')
            ->display_as('MRA_FECHAADQUISICION','Fecha adquisicion')
            ->display_as('MRA_ESTADOADQUISICIONACCESORIO','Estado adquisicion')
            ->display_as('MRA_CANTIDAD','Cantidad')
            ->display_as('ACC_NOMBRE','Accesorio')
            ->display_as('MRA_OBSERVACIONES','Observaciones');
        
//        $crud->unset_add();
        
        $crud->where('MAT_ID',$this->session->userdata('MAT_ID'));
        $crud->set_subject('Accesorio');
        $crud->set_rules('MRA_CANTIDAD', 'Cantidad de Accesorios', 'integer');
        $crud->add_fields('ACC_ID','MRA_CANTIDAD', 'MRA_OBSERVACIONES');
        
        $crud->field_type('MRA_ESTADOADQUISICIONACCESORIO','dropdown',array('P' => 'Pagada', 'NP' => 'No Pagada'));    
        $crud->field_type('MRA_OBSERVACIONES','text');
        $output = $crud->render();
        
        $this->load->view('admin/AddAccessory.php',$output);
    }
    
  function callback_accesories_function($value, $row)
    {
         $attributes = array(
            'width'      => '500',
            'height'     => '500',
            'scrollbars' => 'no',
            'status'     => 'yes',
            'resizable'  => 'yes',
            'screenx'    => '0',
            'screeny'    => '0',
            'class'      => 'various fancybox.ajax'
        );         
            return "<a href='".base_url()."index.php/admin_controller/managementAccessoryEnrollment' width=500,height=500 class='various fancybox.ajax'>Accesorios</a>";
    //    return anchor_popup('admin_controller/managementAccessory/add','Click Here', $attributes);

    }
    
    function showAccessoryEnrollment($primary_key , $row)
    {
        return site_url('admin_controller/managementAccessoryEnrollment').'?id='.$row->MAT_ID;   
    }
    public function managementEnrollment()
    {        
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_model('Enrollment_Model');
        $crud->set_table('MATRICULA');     
        $crud->set_subject('Matricula');
                
//        $crud->fields('CON_SERIAL');
//        $this->load->model('Enrollment_Model');
//        $counters=$this->Enrollment_Model->getListCounterEnables();
//        if(!empty($counters)){
//            $crud->field_type('CON_SERIAL','dropdown',$counters);    
        
        $crud->set_relation_n_n('Contador', 'MATRICULAADQUIERECONTADOR', 'CONTADOR', 'MAT_ID', 'CON_SERIAL', '{CONTADOR.CON_SERIAL}',NULL,array('CONTADOR.CON_ESTADO'=>'D'));
        $crud->set_relation_n_n('Usuarios', 'USUARIOMATRICULACONEXION', 'USUARIO', 'MAT_ID', 'USUA_ID', '{USUA_NOMBRES} {USUA_APELLIDOS}',NULL);
        $crud->columns('MAT_DIRECCIONINSTALACION','MAT_ESTADOCONEXION','MAT_ESTADOMATRICULA','TM_ID');
        $crud->display_as('EST_ID','Estrato')
            ->display_as('MAT_DIRECCIONINSTALACION','Direccion del Inmueble')
            ->display_as('MAT_ESTADOCONEXION','Estado Conexion')
            ->display_as('MAT_ESTADOMATRICULA','Estado Matricula')
            ->display_as('UMC_FECHAMATRICULA','Fecha Matricula')
            ->display_as('UMC_FECHADESACTIVACION','Fecha Desactivacion')
            ->display_as('UMC_MOTIVO','Motivo Desactivacion')
            ->display_as('UMC_ESTADO','Estado usuario Matricula')
            ->display_as('TM_ID','Tipo Matricula')
            ->display_as('accesories','Accesorios');
        
        $crud->set_relation('EST_ID','ESTRATO','EST_NOMBRE');
        $crud->set_relation('TM_ID','TIPOMATRICULA','TM_NOMBRE');
        $crud->field_type('MAT_ESTADOMATRICULA','dropdown',array('P' => 'Pagada', 'NP' => 'No Pagada'));    
        $crud->field_type('MAT_ESTADOCONEXION','dropdown',array('A' => 'Activa', 'S' => 'Suspendida'));    
        $crud->field_type('UMC_ESTADO','dropdown',array('A' => 'Activa', 'I' => 'Inactiva'));    
//        
        $crud->field_type('CON_SERIAL', 'hidden', 'Serial');
        $crud->display_as('CON_SERIAL', 'Serial');
        $crud->field_type('USUA_ID', 'hidden', 'Usuario');
        $crud->display_as('USUA_ID', 'Usuario');
        
        $crud->add_fields('MAT_DIRECCIONINSTALACION','Contador','Usuarios','EST_ID','TM_ID','CON_SERIAL' , 'USUA_ID');
        $crud->edit_fields('Contador','Usuarios','MAT_DIRECCIONINSTALACION','EST_ID','MAT_ESTADOCONEXION','MAT_ESTADOMATRICULA','UMC_FECHAMATRICULA','UMC_ESTADO','UMC_FECHADESACTIVACION','UMC_MOTIVO', 'TM_ID');
//        
        $crud->required_fields('MAT_DIRECCIONINSTALACION','TM_ID','MAT_ESTADOCONEXION','MAT_ESTADOMATRICULA','EST_ID');
        $crud->callback_after_insert(array($this, 'updateStateCounter'));
        
//        $crud->callback_column(array($this,'callback_accesories_function'));
        $crud->add_action('Ver Accesorios', '','','',array($this,'showAccessoryEnrollment'));
        
     //   $crud->callback_after_insert(array($this, 'updateStateAccessoryCounter'));
        $output = $crud->render();
        $js_file="assets/grocery_crud/js/costumize_functions.js";
        $output->js_files[sha1($js_file)] = base_url().$js_file;
        $output->show_index=FALSE;
        $output->main_content="matriculas";
        $output->sub_content="matriculas";
        $output->title="Matriculas";
        $this->generateOutput($output);    
        
    }
    
    public function managementPaymentAgreement()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('ACUERDODEPAGO');
        $crud->columns('USUA_ID','FUNC_ID','ADP_FECHAINSTAURACION','ADP_ESTADO','ADP_TOTAL','ADP_MOTIVO','ADP_NUMEROCUOTAS','ADP_INTERES');
        $crud->set_relation('USUA_ID','USUARIO','USUA_CEDULA');
        $crud->set_relation('FUNC_ID','FUNCIONARIO','FUNC_USUARIO');
        $crud->display_as('USUA_ID','Cedula Usuario')
            ->display_as('FUNC_ID','Funcionario a cargo')
            ->display_as('ADP_FECHAINSTAURACION','Fecha')
            ->display_as('ADP_ESTADO','Estado')
            ->display_as('ADP_TOTAL','Total Acordado')
            ->display_as('ADP_NUMEROCUOTAS','Numero de Cuotas')
            ->display_as('ADP_INTERES','Interes')
            ->display_as('ADP_MOTIVO','Motivo');
        $crud->field_type('ADP_ESTADO','dropdown',array('A' => 'Aprobado', 'NA' => 'No Aprobado', 'NA' => 'Pendiente'));    
        $crud->field_type('ADP_MOTIVO','text');
        $crud->set_rules('CON_TOTAL', 'Total Acordado', 'numeric');
        $crud->set_rules('CON_NUMEROCUOTAS', 'Numero de Cuotas', 'integer');
        $crud->set_rules('CON_INTERES', 'Interes', 'integer');
        $crud->set_subject('Acuerdo de Pago');
        $crud->required_fields('USUA_ID','FUNC_ID','ADP_FECHAINSTAURACION', 'ADP_ESTADO', 'ADP_TOTAL','ADP_NUMEROCUOTAS','ADP_INTERES' , 'ADP_MOTIVO');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="pagos";
        $output->sub_content="acuerdopagos";
        $output->title="Acuerdos de pago";
        $this->generateOutput($output);        
    }
 
     public function managementPartialPayment()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('ABONO');
        $crud->set_subject('Abono');
        $crud->set_relation('USUA_ID','USUARIO','USUA_CEDULA');
        $crud->set_relation('FAC_ID','FACTURA','FAC_FECHAFACTURACION');
        $crud->display_as('USUA_ID','Usuario')
            ->display_as('FAC_ID','Factura')
            ->display_as('ABON_FECHAABONO','Fecha de Abono')
            ->display_as('ABON_VALORABONO','Valor a Abonar')
            ->display_as('ABON_SALDO','Saldo');
        $crud->add_fields('USUA_ID','FAC_ID','ABON_FECHAABONO','ABON_VALORABONO','ABON_SALDO');
        $crud->edit_fields('USUA_ID','FAC_ID','ABON_FECHAABONO','ABON_VALORABONO','ABON_SALDO');
        $crud->required_fields('USUA_ID','FAC_ID','ABON_FECHAABONO', 'ABON_VALORABONO', 'ABON_SALDO');
        
        $this->load->library('gc_dependent_select');

        $fields = array
        (
            'USUA_ID' => array( 
            'table_name' => 'USUARIO', 
            'title' => 'USUA_CEDULA', 
            'relate' => null 
            ),
            'FAC_ID' => array( 
            'table_name' => 'FACTURA', 
            'title' => 'FAC_FECHAFACTURACION',
            'id_field' => 'FAC_ID', //
            'relate' => 'FAC_ID', //campo de relacion con el dropdown principal
            'data-placeholder' => 'Seleccione Factura' //texto

            )
        );

        $config = array
        (
            'main_table' => 'ABONO', //tabla principal
            'main_table_primary' => 'ABON_ID',// id de la tabla principal
            "url" => base_url().'index.php/ajax_controller'. '/' . 'getPartialPaymentByUser',
            'ajax_loader' => base_url().'images/globe16.gif'
        );
        
        $billes = new gc_dependent_select($crud, $fields, $config);
        $js = $billes->get_js();
        $output = $crud->render();
        $output->output.= $js;
        $output->show_index=FALSE;
        $output->main_content="pagos";
        $output->sub_content="abonos";
        $output->title="Abonos";
        $this->generateOutput($output);        
    }
    
    public function measurementRead($value, $row)
    {
      return '<input type="text" class="'.$row->MAT_ID.'" id="measurement_'.$row->MAT_ID.'" name="measurement_'.$row->MAT_ID.'"/> <input type="hidden" id="capacity_'.
              $row->MAT_ID.'" name="capacity_'.$row->MAT_ID.'" value="'.$row->CON_CAPACIDAD.'"/>';
    }
    
    public function managementMeasurement()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('MATRICULA');
        $crud->set_model('Measurement_Model');
        
        $crud->columns('USUA_CEDULA', 'USUA_NOMBRES', 'USUA_APELLIDOS', 'MAT_DIRECCIONINSTALACION', 'LEC_ANT','LEC_ACT');
        $crud->display_as('USUA_CEDULA','Cedula')
            ->display_as('USUA_NOMBRES','Nombres')
            ->display_as('USUA_APELLIDOS','Apellidos')
            ->display_as('MAT_DIRECCIONINSTALACION','Direccion Matricula')
            ->display_as('CON_SERIAL','Contador')
            ->display_as('CON_CAPACIDAD','Capacidad')
            ->display_as('LEC_ACT','Medicion Actual')
            ->display_as('LEC_ANT','Lectura Anterior');
        $crud->field_type('CON_OBSERVACIONES','text');
        $crud->field_type('CON_SERIAL', 'hidden');
        $crud->field_type('CON_CAPACIDAD', 'hidden');
        
        $crud->callback_column('LEC_ACT', array($this,'measurementRead'));
        $crud->unset_add();
        $crud->unset_delete();
        
        $output = $crud->render();
        $css_file="assets/grocery_crud/themes/datatables/css/datatables.css";
        $js_file="assets/grocery_crud/js/costumize_functions.js";
        $output->js_files[sha1($js_file)] = base_url().$js_file;
        $output->css_files[sha1($css_file)] = base_url().$css_file;
        $output->show_index=FALSE;
        $output->main_content="contadores";
        $output->sub_content="lecturas";
        $output->title="Lecturas";
        $this->generateOutput($output);        
    }
   
//    public function managementMeasurement()
//    {
//        $data = array();
//        $data['title'] = 'Ingresar Lecturas';
//        $data['head_title'] = 'Lista Para Ingreso Lecturas';
//        $this->load->model('Measurement_Model');        
//        $data['ListMeasurement'] = $this->Measurement_Model->getListEnrollmentUser();
//        $this->load->view('admin/managementMeasurement', $data);
//    }
    function insertMeasurement() 
    {
        $this->load->model('InsertMeasurement_Model');
        $data=array();
        $action=$this->input->post("accept");
        if(!empty($action))
        {
            $reg = $this->session->userdata('registros');
            for($i=1;$i<=$reg;$i++){
                if($this->input->post('measurement_'.$i)>0){
                    $data['MAT_ID'] = $i;
                    $data['LEC_VALORMEDICION'] = $this->input->post('measurement_'.$i,TRUE);
                    date_default_timezone_set('America/Bogota');
                    $data['LEC_FECHAMEDICION'] = date('Y-m-d H:i:s');
                    $data['LEC_OBSERVACIONES'] = $this->input->post('observation_'.$i);
                    $this->InsertMeasurement_Model->insertMeasurement($data);     
                }
                
            }
        }
        redirect('admin_controller/managementCounter');
    }
    public function managementAgreements()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('CONVENIO');
        $crud->display_as('CON_OBSERVACIONES','Observaciones')
            ->display_as('CON_NOMBRE','Nombre')
            ->display_as('CON_VALORACORDADO','Valor acordado');
        $crud->set_rules('CON_VALORACORDADO', 'Valor acordado', 'numeric');
        $crud->field_type('CON_OBSERVACIONES','text');
        $crud->set_subject('Convenio');
        $crud->required_fields('CON_NOMBRE','CON_OBSERVACIONES','CON_VALORACORDADO');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="convenios";
        $output->title="Convenios";
        $this->generateOutput($output);
    }
    
    public function managementTariff()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('TARIFA');
        $crud->set_relation('TM_ID','TIPOMATRICULA','TM_NOMBRE');
        $crud->set_relation('EST_ID','ESTRATO','EST_NOMBRE');
        $crud->display_as('TAR_NOMBRE','Nombre')
            ->display_as('TAR_DESCRIPCION','Descripcion')
            ->display_as('TAR_CARGOFIJO','Cargo fijo')
            ->display_as('TAR_COSTO','Costo')
            ->display_as('TAR_INTERES','Interes')
            ->display_as('TAR_ANIO_VIGENCIA','A&ntilde;o Vigencia')
            ->display_as('TAR_ESTADO','Estado')
            ->display_as('TAR_CANTIDAD','Cantidad')
            ->display_as('TAR_SUBSIDIO','Subsidio')
            ->display_as('EST_ID','Estrato')
            ->display_as('TM_ID','Tipo');
        $crud->field_type('TAR_ESTADO','dropdown',array('V' => 'Vigente', 'NV' => 'No Vigente'));    
        $crud->set_rules('TAR_CARGOFIJO', 'Cargo Fijo', 'Numeric');
        $crud->set_rules('TAR_COSTO', 'Costo', 'Numeric');
        $crud->set_rules('TAR_INTERES', 'Interes', 'Numeric');
        $crud->set_subject('Tarifa');
        $crud->required_fields('TAR_NOMBRE','TAR_DESCRIPCION','TAR_CARGOFIJO', 'TAR_COSTO', 'TAR_INTERES','TAR_ANIO_VIGENCIA','TAR_ESTADO' , 'EST_ID','TM_ID' );
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="tarifa";
        $output->title="Tarifas";
        $this->generateOutput($output);        
    }    
 
    public function managementTypeEnrollment()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('TIPOMATRICULA');
        $crud->display_as('TM_NOMBRE','Nombre')
            ->display_as('TM_DESCRIPCION','Descripcion');
        $crud->set_subject('Tipo Matricula');
        $crud->required_fields('TM_NOMBRE','TM_DESCRIPCION');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="tiposmatriculas";
        $output->title="Tipo Matriculas";
        $this->generateOutput($output);      
    }
    
    public function managementStratum()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('ESTRATO');
        $crud->display_as('EST_NOMBRE','Nombre')
            ->display_as('EST_CLASE','Clase');
        $crud->set_subject('Estrato');
        $crud->required_fields('EST_NOMBRE','EST_CLASE');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="estratos";
        $output->title="Estratos";
        $this->generateOutput($output);
               
    }

    public function managementResolutionDian()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('RESOLUCIONDIAN');
        $crud->display_as('RESDIAN_NUMERORESOLUCION','Numero Resolucion')
            ->display_as('RESDIAN_FECHAAPROBACION','Fecha Aprovacion')
            ->display_as('RESDIAN_MAXFACTURA','Numero maximo de Facturas')
            ->display_as('RESDIAN_ESTADO','Estado')
            ->display_as('RESDIAN_NUMEROFACT','Numero disponible de Facturas');
        $crud->field_type('RESDIAN_ESTADO','dropdown',array('A' => 'Activa', 'I' => 'Inactiva'));  
        $crud->set_rules('RESDIAN_MAXFACTURA', 'Numero maximo de facturas', 'integer');
        $crud->set_rules('RESDIAN_NUMEROFACT', 'Numero disponible de Facturas', 'integer');
        $crud->set_subject('Resolucion DIAN');
        $crud->required_fields('RESDIAN_NUMERORESOLUCION','RESDIAN_FECHAAPROBACION','RESDIAN_MAXFACTURA', 'RESDIAN_ESTADO', 'RESDIAN_NUMEROFACT');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="resolucion";
        $output->title="Resoluciones";
        $this->generateOutput($output);
    }
    
    function managementEnterprise()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('EMPRESA');
        $crud->display_as('EMP_NOMBRE','Empresa')
            ->display_as('EMP_NIT','NIT')
            ->display_as('EMP_TELEFONO','Telefono')
            ->display_as('EMP_DIRECCION','Direccion')
            ->display_as('EMP_PAGINAWEB','Sitio Web')
            ->display_as('EMP_RAZONSOCIAL','Razon Social')
            ->display_as('EMP_LOGO','Logo');
        $crud->set_rules('EMP_TELEFONO', 'Telefono', 'integer');
        $crud->set_subject('Empresa');
        $crud->set_field_upload('EMP_LOGO','assets/uploads/files');
        $crud->required_fields('EMP_NOMBRE','EMP_NIT','EMP_TELEFONO','EMP_DIRECCION','EMP_RAZONSOCIAL');
        $crud->unset_add();
        $crud->unset_delete();
        $crud->unset_back_to_list();
        $crud->unset_export();
        $crud->unset_print();
        $crud->unset_read();
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="empresa";
        $output->title="Empresa";
        $this->generateOutput($output);
    }

    function viewEnrollmentByUserId()
    {
        $id = $this->input->get('id', TRUE);
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_model('UserEnrollment_Model');
        $crud->set_table('MATRICULA');   
        $crud->set_subject('Matricula');        
        $this->session->set_userdata('USUA_ID',$id);
        $crud->columns('MAT_DIRECCIONINSTALACION','MAT_ESTADOCONEXION','MAT_ESTADOMATRICULA','TM_NOMBRE','UMC_FECHAMATRICULA', 'EST_NOMBRE', 'UMC_ESTADO');
        $crud->display_as('EST_NOMBRE','Estrato')
            ->display_as('MAT_DIRECCIONINSTALACION','Direccion del Inmueble')
            ->display_as('MAT_ESTADOCONEXION','Estado Conexion')
            ->display_as('MAT_ESTADOMATRICULA','Estado Matricula')
            ->display_as('UMC_ESTADO','Estado Conexion Usuario')
            ->display_as('UMC_FECHAMATRICULA','Fecha Matricula')
            ->display_as('TM_NOMBRE','Tipo Matricula')
            ->display_as('EST_ID','Estrato')
            ->display_as('TM_ID','Tipo Matricula');
//        
//        $crud->set_relation('TM_ID', 'TIPOMATRICULA', 'TM_NOMBRE');
//        $crud->set_relation('EST_ID', 'ESTRATO', 'EST_NOMBRE');
////        
        $crud->field_type('MAT_ESTADOMATRICULA','dropdown',array('P' => 'Pagada', 'NP' => 'No Pagada'));    
        $crud->field_type('MAT_ESTADOCONEXION','dropdown',array('A' => 'Activa', 'S' => 'Suspendida'));    
        $crud->field_type('UMC_ESTADO','dropdown',array('A' => 'Activa', 'I' => 'Inactiva'));    
//        
//        //falta agregar el contador
        $crud->add_fields('MAT_DIRECCIONINSTALACION','EST_ID','TM_ID');
//        $crud->edit_fields('MAT_DIRECCIONINSTALACION','EST_ID','TM_ID','MAT_ESTADOCONEXION','MAT_ESTADOMATRICULA','UMC_FECHAMATRICULA','UMC_ESTADO','UMC_FECHADESACTIVACION','UMC_MOTIVO');
//        
        $crud->required_fields('MAT_DIRECCIONINSTALACION','MAT_ESTADOCONEXION','MAT_ESTADOMATRICULA','EST_ID','TM_ID');
        $output = $crud->render();
        $this->generateOutput($output);        
        
    }
    
    function showEnrollment($primary_key , $row)
    {
        return site_url('admin_controller/viewEnrollmentByUserId').'?id='.$row->USUA_ID;   
    }
    function managementUsers()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('USUARIO');
        $crud->set_model("User_Model");
        $crud->columns('USUA_CEDULA','USUA_NOMBRES','USUA_APELLIDOS','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO');
        $crud->display_as('USUA_NOMBRES','Nombres')
            ->display_as('USUA_APELLIDOS','Apellidos')
            ->display_as('USUA_CEDULA','Cedula')
            ->display_as('USUA_CORREO','Correo')
            ->display_as('USUA_DIRECCIONRESIDENCIA','Direccion')
            ->display_as('USUA_TELEFONO','Telefono')
            ->display_as('USUA_CELULAR','Celular');
        $crud->add_fields('USUA_NOMBRES','USUA_APELLIDOS','USUA_CEDULA','USUA_CORREO','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO','USUA_CELULAR');
        $crud->edit_fields('USUA_NOMBRES','USUA_APELLIDOS','USUA_CEDULA','USUA_CORREO','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO','USUA_CELULAR');
        $crud->set_subject('Usuario');
        $crud->set_rules('USUA_CORREO','Correo','valid_email');
        $crud->set_rules('USUA_CEDULA', 'Cedula', 'integer');
        $crud->set_rules('USUA_TELEFONO', 'Telefono', 'integer');
        $crud->set_rules('USUA_CELULAR', 'Celular', 'integer');
        $crud->required_fields('EMP_ID','USUA_NOMBRES','USUA_APELLIDOS','USUA_CEDULA','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO');
        $crud->add_action('Ver matriculas', '','','',array($this,'showEnrollment'));
        $crud->unset_back_to_list();
        $crud->unset_print();
        $crud->unset_export();
        $crud->unset_read();
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="usuarios";
        $output->sub_content="usuarios";
        $output->title="Usuarios";
        $this->generateOutput($output);
    }	
	
    function managementChargue()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('CARGO');
        $crud->display_as('CAR_NOMBRE','Cargo')
             ->display_as('CAR_DESCRIPCION','Descripcion del Cargo');
        $crud->field_type('CAR_DESCRIPCION',"text");
        $crud->set_subject('Cargo');
        $crud->required_fields('CAR_NOMBRE');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="usuarios";
        $output->sub_content="cargos";
        $output->title="Cargos";
        $this->generateOutput($output);
    }	
    
    function updateStateAccessoryCounter($post_array,$primary_key)
    {
        $serial = $post_array['CON_SERIAL'];
             
        $this->load->model('Measurement_Model');
        $acc_id = $this->Measurement_Model->getAccIdCounter($serial);
        if(!empty($acc_id))$update = $this->Measurement_Model->updateAccStock($acc_id);
        return $update;
    }
    
    function managementCounter()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('CONTADOR');
        $crud->set_model('Counter_Model');
        $this->load->model('Accessory_Model');
        $accessorys=$this->Accessory_Model->getListCounterTypeAccessorys();
        $crud->display_as('CON_CAPACIDAD','Capacidad')
             ->display_as('ACC_ID','Descripcion Contador')
             ->display_as('CON_SERIAL','Serial')
             ->display_as('CON_ESTADO','Estado')
            ->display_as('CON_FORMAADQUISICION','Forma Adquisicion');
        
        $crud->field_type('CON_FORMAADQUISICION','dropdown',array('E' => 'Empresa', 'U' => 'Usuario'));    
        $crud->field_type('CON_ESTADO','dropdown',array('U' => 'Usado', 'D' => 'Disponible'));    
        $crud->field_type('ACC_ID','dropdown',$accessorys);
        $crud->add_fields('ACC_ID','CON_SERIAL','CON_CAPACIDAD','CON_FORMAADQUISICION');
        $crud->set_rules('CON_CAPACIDAD', 'Capacidad', 'integer|required');
        $crud->set_subject('Contador');
        $crud->required_fields('CON_CAPACIDAD','CON_SERIAL','ACC_ID','CON_ESTADO', 'CON_FORMAADQUISICION');       
        
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="contadores";
        $output->sub_content="contadores";
        $output->title="Contadores";
        $this->generateOutput($output);
    }	

    function managementAccessory()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('ACCESORIO');
        $crud->set_relation("TAC_ID","TIPOACCESORIO","TAC_NOMBRE");
        $crud->set_relation('TAC_ID','TIPOACCESORIO','TAC_NOMBRE');
        $crud->display_as('ACC_NOMBRE','Nombre accesorio')
             ->display_as('TAC_ID','Tipo Accesorio')
             ->display_as('ACC_DESCRIPCION','Descripcion')
             ->display_as('ACC_STOCK','Existencias')
             ->display_as('ACC_PRECIO','Precio')
             ->display_as('ACC_COSTOVENTA','Precio venta')
             ->display_as('ACC_MARCA','Marca');
        $crud->set_subject('Accesorio');
        $crud->field_type('ACC_DESCRIPCION','text');
        $crud->set_rules('ACC_COSTOVENTA', 'Precio Venta', 'numeric|required');
        $crud->set_rules('ACC_STOCK', 'Existencias', 'integer|required');
        $crud->set_rules('ACC_PRECIO', 'Precio', 'numeric|required');
        $crud->required_fields('TAC_ID','ACC_NOMBRE','ACC_DESCRIPCION','ACC_STOCK','ACC_PRECIO','ACC_COSTOVENTA','ACC_MARCA');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="matriculas";
        $output->sub_content="accesorios";
        $output->title="Accesortios";
        $this->generateOutput($output);
    }
    
    function managementTypeAccessory()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_table('TIPOACCESORIO');
        $crud->display_as('TAC_NOMBRE','Tipo accesorio')
             ->display_as('TAC_DESCRIPCION','Descripcion');
        $crud->set_subject('Tipo Accesorio');
        $crud->field_type('TAC_DESCRIPCION','text');
        $crud->required_fields('TAC_NOMBRE','TAC_DESCRIPCION');
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="configuracion";
        $output->sub_content="tiposaccesorios";
        $output->title="Matriculas";
        $this->generateOutput($output);
    }
    
    function encryptPasswordCallback($post_array, $primary_key = null)
    {
        $this->load->library('encrypt');
        $post_array['FUNC_CONTRASENA'] = $this->encrypt->encode($post_array['FUNC_CONTRASENA']);
        unset($post_array['VER_FUNC_CONTRASENA']);
        return $post_array;
    }

    function decryptPasswordCallback($value)
    {
        $this->load->library('encrypt');
        $decrypted_password = $this->encrypt->decode($value);
        return "<input type='password' name='FUNC_CONTRASENA' value='$decrypted_password' />"; 
    }
    
    function decryptVerifyPasswordCallback($value)
    {
        $this->load->library('encrypt');
        $decrypted_password = $this->encrypt->decode($value);
        return "<input type='password' name='VER_FUNC_CONTRASENA' value='$decrypted_password' />"; 
    }
    
    function managementFunctionary()
    {
        $crud = new grocery_CRUD();
        $crud->set_theme('datatables');
        $crud->set_model('Functionary_Model');
        $crud->set_table('FUNCIONARIO');        
        $crud->set_relation('EMP_ID','EMPRESA','EMP_NOMBRE');
        $crud->set_relation_n_n('Cargos','FUNCIONARIODESEMPENIACARGO','CARGO','USUA_ID', 'CAR_ID', 'CAR_NOMBRE',null);  
        
        $crud->columns('USUA_NOMBRES','USUA_APELLIDOS','USUA_CEDULA','FUNC_USUARIO','FUNC_CONTRASENA');
        $crud->display_as('FUNC_USUARIO','Usuario')
             ->display_as('USUA_NOMBRES','Nombres')
             ->display_as('EMP_ID','Empresa')
             ->display_as('USUA_APELLIDOS','Apellidos')
             ->display_as('USUA_CEDULA','Cedula')
             ->display_as('USUA_CORREO','Correo')
             ->display_as('USUA_DIRECCIONRESIDENCIA','Direccion')
             ->display_as('USUA_TELEFONO','Telefono')
             ->display_as('USUA_CELULAR','Celular')
             ->display_as('FUNC_CONTRASENA','Contrase&ntilde;a')
             ->display_as('FDC_MOTIVO','Motivo');
        $crud->set_subject('Funcionario');
     
        $crud->change_field_type('FDC_MOTIVO', 'text');
        $crud->field_type('FUNC_CONTRASENA','password');
        $crud->field_type('FDC_ESTADOCARGO','dropdown',array('A' => 'Activo', 'I' => 'Inactivo'));  
        $crud->display_as('FDC_ESTADOCARGO','Estado del funcionario');
        $crud->display_as('FDC_FECHAVINCULACION','Fecha Vinculacion');
        $crud->display_as('FDC_FECHADESVINCULACION','Fecha de Desvinculacion');
        $crud->field_type('VER_FUNC_CONTRASENA', 'password');
        $crud->display_as('VER_FUNC_CONTRASENA','Verificar Contrase&ntilde;a');
        
        $crud->add_fields('EMP_ID','USUA_NOMBRES','USUA_APELLIDOS','USUA_CEDULA','USUA_CORREO','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO','USUA_CELULAR','FUNC_USUARIO','FUNC_CONTRASENA','VER_FUNC_CONTRASENA','Cargos','FDC_ESTADOCARGO');
        $crud->edit_fields('EMP_ID','USUA_CEDULA','USUA_NOMBRES','USUA_APELLIDOS','USUA_CORREO','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO','USUA_CELULAR','FUNC_USUARIO','FUNC_CONTRASENA','VER_FUNC_CONTRASENA','FDC_FECHAVINCULACION','Cargos','FDC_ESTADOCARGO','FDC_FECHADESVINCULACION','FDC_MOTIVO');
        $crud->set_rules('FUNC_USUARIO','Usuario','required|min_length[4]');
        $crud->set_rules('FUNC_CONTRASENA','Contrase&ntilde;a','required|min_length[8]|matches[VER_FUNC_CONTRASENA]|alphanumeric');
        $crud->set_rules('VER_FUNC_CONTRASENA','Verificar Contrase&ntilde;a','required|alphanumeric');
        $crud->required_fields('EMP_ID','USUA_NOMBRES','USUA_APELLIDOS','USUA_CEDULA','USUA_CORREO','USUA_DIRECCIONRESIDENCIA','USUA_TELEFONO','USUA_CELULAR','FUNC_USUARIO','FUNC_CONTRASENA','VER_FUNC_CONTRASENA','FDC_FECHAVINCULACION','Cargos');
        $crud->callback_before_insert(array($this,'encryptPasswordCallback'));
        $crud->callback_before_update(array($this,'encryptPasswordCallback'));
        $crud->callback_edit_field('FUNC_CONTRASENA',array($this,'decryptPasswordCallback'));
        $crud->callback_edit_field('VER_FUNC_CONTRASENA',array($this,'decryptVerifyPasswordCallback'));
        $output = $crud->render();
        $output->show_index=FALSE;
        $output->main_content="usuarios";
        $output->sub_content="funcionarios";
        $output->title="Funcionarios";
        $this->generateOutput($output);
    }
    
    function managementPayments()
    {
        $output= (object) array('output' => '' , 'js_files' => array() , 'css_files' => array(), 'show_index' => FALSE, 'title' => 'Pagos','main_content' => 'pagos','sub_content' => 'pagos');
        $this->generateOutput($output);
    }
    
    function loadBill()
    {
        $this->load->view('bill/bill_pdf');    
    }
    
    function generateOutput($output = null)
    {   
       $this->load->view('includes/template', $output);
    }
}
 